/*****************************************************************************/
/* Domino Operation System GUI Specific Module                               */
/*                                                                           */
/* Copyright (C) 2014 Laszlo Arvai                                           */
/* All rights reserved.                                                      */
/*                                                                           */
/* This software may be modified and distributed under the terms             */
/* of the BSD license.  See the LICENSE file for details.                    */
/*****************************************************************************/

#ifndef __guiTypes_H
#define __guiTypes_H

///////////////////////////////////////////////////////////////////////////////
// Includes
#include "drvIOConfig.h"

///////////////////////////////////////////////////////////////////////////////
// Constants

#define guiINVALID_COORDINATE -32768

// System brushes
#define dosGUISB_SolidBackColor 0
#define dosGUISB_Halftone 1
#define dosGUISB_SolidForeColor 2
#define dosGUISB_Last 2

// Gui drawing mode
#define dosGUIDM_Inverse			(1<<1)
#define dosGUIDM_Transparent	(1<<2)

// Horizontal Text Align
#define dosGUIHA_LEFT					0
#define dosGUIHA_CENTER				(1)
#define dosGUIHA_RIGHT				(2)
#define dosGUIHA_MASK					(3)

// Vertical text Align
#define dosGUIVA_TOP					0
#define dosGUIVA_CENTER				(1<<2)
#define dosGUIVA_BOTTOM				(2<<2)
#define dosGUIVA_MASK					(3<<2)

///////////////////////////////////////////////////////////////////////////////
// GUI font flags
#define	dosGUIFF_DONTCARE			1				// Don't care or don't know.
#define dosGUIFF_ROMAN				2				// Proportionally spaced fonts with serifs.
#define dosGUIFF_SWISS				3				// Proportionally spaced fonts without serifs.
#define dosGUIFF_MODERN				4				// Fixed-pitch fonts.
#define dosGUIFF_SCRIPT				5				// Script
#define dosGUIFF_DECORATIVE		6				// Decorative
#define dosGUIFF_FIXED				(1<<7)	// Set if the font is fixed
#define dosGUIFF_INVALID			0				// invalid family type

///////////////////////////////////////////////////////////////////////////////
// mos GUI rectangle type
struct _guiRect
{
	dosInt16 Left;
	dosInt16 Top;
	dosInt16 Right;
	dosInt16 Bottom;
};

///////////////////////////////////////////////////////////////////////////////
// mos GUI size type
struct _guiSize
{
	dosInt16 Width;
	dosInt16 Height;
};

///////////////////////////////////////////////////////////////////////////////
// GUI font info
struct _guiFontInfo
{
	dosByte				Type;
	dosByte				Flag;
	dosByte				Width;
	dosByte				Height;
	dosByte				Baseline;
	dosByte				HorizontalCharacterGap;
	dosByte				Minascii;
	dosByte				Maxascii;
	dosWord				UnicodeCount;
	dosByte				DefaultCharacter;
	dosROMAddress	AsciiTableAddress;
};

///////////////////////////////////////////////////////////////////////////////
// Typesdefs
typedef struct _guiRect guiRect;
typedef struct _guiSize guiSize;
typedef struct _guiFontInfo guiFontInfo;
typedef dosInt16 guiCoordinate;

#endif
